﻿#include "ObjectPool.h"
#include "ConcurrencyAlloc.h"

//void Alloc1()
//{
//	for (size_t i = 0; i < 5; ++i)
//	{
//		void* ptr = ConcurrencyAlloc(6);
//	}
//}
//
//void Alloc2()
//{
//	for (size_t i = 0; i < 5; ++i)
//	{
//		void* ptr = ConcurrencyAlloc(7);
//	}
//}
//void TLSTest()
//{
//	std::thread t1(Alloc1);
//	t1.join();
//
//	std::thread t2(Alloc2);
//	t2.join();
//}
//
void TestConcurrentAlloc1()
{
	void* p1 = ConcurrencyAlloc(6);
	void* p2 = ConcurrencyAlloc(8);
	void* p3 = ConcurrencyAlloc(1);
	void* p4 = ConcurrencyAlloc(7);
	void* p5 = ConcurrencyAlloc(8);
	void* p6 = ConcurrencyAlloc(7);
	void* p7 = ConcurrencyAlloc(8);

	cout << p1 << endl;
	cout << p2 << endl;
	cout << p3 << endl;
	cout << p4 << endl;
	cout << p5 << endl;
	cout << p6 << endl;
	cout << p7 << endl;

	ConcurrencyFree(p1);
	ConcurrencyFree(p2);
	ConcurrencyFree(p3);
	ConcurrencyFree(p4);
	ConcurrencyFree(p5);
	ConcurrencyFree(p6);
	ConcurrencyFree(p7);
}
//void TestConcurrentAlloc2()
//{
//	for (int i = 0; i < 1025; ++i)
//	{
//		void* p = ConcurrencyAlloc(8);
//		cout << p << endl;
//	}
//}
//
//void MultiThreadAlloc1()
//{
//	std::vector<void*> v;
//	for (size_t i = 0; i < 7; ++i)
//	{
//		void* ptr = ConcurrencyAlloc(6);
//		v.push_back(ptr);
//	}
//
//	for (auto e : v)
//	{
//		ConcurrencyFree(e);
//	}
//}
//
//void MultiThreadAlloc2()
//{
//	std::vector<void*> v;
//	for (size_t i = 0; i < 7; ++i)
//	{
//		void* ptr = ConcurrencyAlloc(16);
//		v.push_back(ptr);
//	}
//
//	for (auto e : v)
//	{
//		ConcurrencyFree(e, 16);
//	}
//}
//
//void TestMultiThread()
//{
//	std::thread t1(MultiThreadAlloc1);
//	std::thread t2(MultiThreadAlloc2);
//
//	t1.join();
//	t2.join();
//}
//
//void test()
//{
//	ConcurrencyAlloc(300 * 1024);
//}


int main()
{
	// TLSTest();
	TestConcurrentAlloc1();
	//TestConcurrentAlloc2();
	//TestMultiThread();
	//test();
	return 0;
}

